package com.probox.common.entity.service.customer;

import com.baomidou.mybatisplus.extension.service.IService;
import com.probox.common.core.web.domain.AjaxResult;
import com.probox.common.entity.domain.customer.CustomerAddress;
import com.probox.customer.api.domain.CustomerAddressVo;

import java.util.List;

/**
 * 客户收货地址Service接口
 *
 * @author zsy
 * @date 2021-06-18
 */
public interface ICustomerAddressService extends IService<CustomerAddress> {


        /**
         * 查询客户收货地址
         *
         * @param addressUid 客户收货地址ID
         * @return 客户收货地址
         */
        public CustomerAddress selectCustomerAddressById(Long addressUid);




        /**
         * 查询客户收货地址列表
         *
         * @param customerAddress 客户收货地址
         * @return 客户收货地址集合
         */
        public List<CustomerAddress> queryList(CustomerAddress customerAddress);

        /**
         * 查询客户姓名及收货地址列表
         * @param customerAddress
         * @return
         */
        List<com.probox.common.entity.vo.customer.CustomerAddressVo> queryListvo(com.probox.common.entity.vo.customer.CustomerAddressVo customerAddress);
        /**
         * 新增客户收货地址
         *
         * @param customerAddress 客户收货地址
         * @return 结果
         */
        public boolean insertCustomerAddress(CustomerAddress customerAddress);
        public boolean insertCustomerAddressOpen(CustomerAddress customerAddress);

        /**
         * 修改客户收货地址
         *
         * @param customerAddress 客户收货地址
         * @return 结果
         */
        public boolean updateCustomerAddress(CustomerAddress customerAddress);
        public boolean updateCustomerAddressOpen(CustomerAddress customerAddress);

        /**
         * 批量删除客户收货地址
         *
         * @param addressUids 需要删除的客户收货地址ID
         * @return 结果
         */
        public boolean deleteCustomerAddressByIds(Long[] addressUids);

        /**
         * 根据地址id返回地址信息
         * @param addressId
         * @return
         */
        public CustomerAddressVo getCustomerAddressInfo(Long addressId);

        /**
         * 获取当前客户默认地址
         * @return
         */
        public CustomerAddress getDefaultAddress(Long customerId);

        public Boolean updateAddressStatus(CustomerAddress customerAddress);

        /**
         * 查看客户地址详细
         * @param addressUid
         * @return
         */
        public AjaxResult selectCustomerAddressDetail(Long addressUid);

        /**
         * 查询当前客户所有收货地址
         * @return
         */
        public List<CustomerAddress> getCustomerAllAddress();

        /**
         * 查询当前客户所有收货地址总条数
         * @return
         */
        public Integer getCustomerAllAddressCount();

        /**
         * 查询指定客户收货地址列表
         * @param customerAddress
         * @return
         */
        public List<com.probox.common.entity.vo.customer.CustomerAddressVo> getByIdAddress(Long customerUid);
}
